﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using SGTD.Entidades;

namespace SGTD.DAO
{
    public class clsCorreoDAO
    {
        public List<clsCorreo> listarCorreoEntrada()
        {
            SqlConnection conexion = clsConexion.ObtenerConexion();
            SqlCommand cmd = new SqlCommand("listar_correoEntrada_pa", conexion);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;

            SqlDataReader dr = cmd.ExecuteReader();

            List<clsCorreo> lista = new List<clsCorreo>();
            clsCorreo c = null;

            while (dr.Read())
            {
                c = new clsCorreo();
                c.IdCorreo = Convert.ToInt32(dr["IdCorreo"]);
                c.Mensaje = Convert.ToString(dr["Mensaje"]);
                c.Asunto = Convert.ToString(dr["Asunto"]);
                c.Destinatario.Area = new clsArea { NombreArea = Convert.ToString(dr["NombreArea"]) };
                c.FechaRecepcion = Convert.ToDateTime(dr["FechaRecepcion"]);
                c.Estado = Convert.ToBoolean(dr["Estado"]);
                c.FichaTramiteDocumento = new clsFichaTramiteDocumento { Adjunto = Convert.ToString(dr["Adjunto"]) };
                lista.Add(c);
            }
            conexion.Close();
            return lista;
        }

        public List<clsCorreo> listarCorreoSalida()
        {
            SqlConnection conexion = clsConexion.ObtenerConexion();
            SqlCommand cmd = new SqlCommand("listar_correoSalida_pa", conexion);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;

            SqlDataReader dr = cmd.ExecuteReader();

            List<clsCorreo> lista = new List<clsCorreo>();
            clsCorreo c = null;

            while (dr.Read())
            {
                c = new clsCorreo();
                c.IdCorreo = Convert.ToInt32(dr["IdCorreo"]);
                c.Mensaje = Convert.ToString(dr["Mensaje"]);
                c.Asunto = Convert.ToString(dr["Asunto"]);
                c.Destinatario.Area = new clsArea { NombreArea = Convert.ToString(dr["NombreArea"]) };
                c.FechaEnvio = Convert.ToDateTime(dr["FechaEnvio"]);
                c.Estado = Convert.ToBoolean(dr["Estado"]);
                c.FichaTramiteDocumento = new clsFichaTramiteDocumento { Adjunto = Convert.ToString(dr["Adjunto"]) };
                lista.Add(c);
            }
            conexion.Close();
            return lista;
        }

        public List<clsCorreo> VerCorreo()
        {
            SqlConnection conexion = clsConexion.ObtenerConexion();
            SqlCommand cmd = new SqlCommand("Ver_correo_pa", conexion);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;

            SqlDataReader dr = cmd.ExecuteReader();

            List<clsCorreo> lista = new List<clsCorreo>();
            clsCorreo c = null;

            while (dr.Read())
            {
                c = new clsCorreo();
                c.IdCorreo = Convert.ToInt32(dr["IdCorreo"]);
                c.Mensaje = Convert.ToString(dr["Mensaje"]);
                c.Asunto = Convert.ToString(dr["Asunto"]);
                c.Destinatario.Area = new clsArea { NombreArea = Convert.ToString(dr["NombreArea"]) };
                c.FechaEnvio = Convert.ToDateTime(dr["FechaEnvio"]);
                c.FechaRecepcion = Convert.ToDateTime(dr["FechaRecepcion"]);
                c.Estado = Convert.ToBoolean(dr["Estado"]);
                c.FichaTramiteDocumento = new clsFichaTramiteDocumento { Adjunto = Convert.ToString(dr["Adjunto"]) };
                lista.Add(c);
            }
            conexion.Close();
            return lista;
        }

        public Boolean CrearCorreo(clsCorreo c)
        {
            SqlConnection conexion = clsConexion.ObtenerConexion();
            SqlCommand cmd = new SqlCommand("crear_correo_pa", conexion);
            cmd.CommandType = System.Data.CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("@IdCorreo", c.IdCorreo);
            cmd.Parameters.AddWithValue("@Mensaje", c.Mensaje);
            cmd.Parameters.AddWithValue("@Asunto", c.Asunto);
            c.Destinatario.Area = new clsArea();
            cmd.Parameters.AddWithValue("@Destinatario", c.Destinatario.Area.IdArea);
            cmd.Parameters.AddWithValue("@Emisor", c.Area.IdArea);
            cmd.Parameters.AddWithValue("@FechaEnvio", c.FechaEnvio);
            cmd.Parameters.AddWithValue("@Estado", c.Estado);
            c.FichaTramiteDocumento = new clsFichaTramiteDocumento();
            cmd.Parameters.AddWithValue("@IdFichaTramiteDocumento", c.FichaTramiteDocumento.IdFichaTramiteDocumento);
            cmd.ExecuteNonQuery();

            conexion.Close();
            return true;
        }
    }
}